Linux 使用 Clash 代理客户端:安装、systemd 常驻与终端代理
在无桌面环境的 Linux 服务器上,如果网络访问需要统一经过代理网关(例如隔离网络中只有代理机能出站),Clash 是一个常用选择:单个静态二进制、配置文件驱动、自带规则分流。本文记录从下载、配置到 systemd 服务化的完整步骤,以及让终端命令(curl、git、包管理器)走代理的环境变量写法。
仓库现状
原版 Clash 仓库(Dreamacro/clash)已于 2023 年 11 月归档停止维护,目前社区活跃的接续分支是 MetaCubeX/mihomo(即 Clash.Meta),配置格式与使用方式基本兼容。下文步骤以原版 Clash 的用法为基准,对 mihomo 同样适用,新环境建议直接安装 mihomo。
安装
从 release 页面下载对应架构的二进制(Ubuntu x86_64 为 clash-linux-amd64,mihomo 的命名类似):
gunzip clash-linux-amd64-v1.xx.0.gz
mv clash-linux-amd64-v1.xx.0 clash
chmod u+x clash 首次启动时 Clash 会自动下载 Country.mmdb(GeoIP 数据库,用于按地理位置分流)到 ~/.config/clash。网络较慢时可从 maxmind-geoip release 手动下载后放到同一位置。
配置文件
Clash 的全部行为由一个 YAML 配置决定。网络管理员提供订阅链接时,直接下载为 config.yaml:
curl -o config.yaml 'https://订阅链接' 短链接服务有重定向,需加 -L:
curl -L -o config.yaml 'https://短链接' 配置的核心字段:port/mixed-port 是本地代理监听端口(默认 HTTP 7890、SOCKS 7891,mixed-port 则单端口双协议);proxies 定义上游代理;rules 决定哪些目标走代理、哪些直连。
systemd 服务化
登录会话退出后前台进程会被挂断,用 systemd 把 Clash 注册为系统服务实现常驻与开机自启。把可执行文件与配置归位:
sudo mkdir /etc/clash
sudo cp clash /usr/local/bin
sudo cp config.yaml Country.mmdb /etc/clash/ 创建 /etc/systemd/system/clash.service:
[Unit]
Description=Clash daemon, A rule-based proxy in Go.
After=network.target
[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/clash -d /etc/clash
[Install]
WantedBy=multi-user.target -d 指定配置目录,Restart=always 保证进程异常退出后自动拉起。启用并启动:
sudo systemctl enable clash
sudo systemctl start clash 查看运行状态与日志:
sudo systemctl status clash
sudo journalctl -u clash -f 让终端命令走代理
Clash 起来之后只是一个本地端口,命令行工具不认系统代理设置,需要环境变量:
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7891 验证:
curl -v https://www.google.com 2>&1 | grep -i connected 想登录后自动生效,把上面三行写进 ~/.bashrc。临时关闭代理:
unset http_proxy https_proxy all_proxy git 若需单独配置:git config --global http.proxy http://127.0.0.1:7890(仅对 HTTP(S) 协议的远端生效,SSH 协议需另行配置 ProxyCommand)。
小结
单个二进制加一份 YAML,Clash(或其接续分支 mihomo)在服务器上的部署成本很低:下载二进制、放好 config.yaml 与 GeoIP 库、写一个十行的 systemd unit,即可获得带规则分流与自动重启的常驻代理;终端侧配好三个环境变量即可让绝大多数命令行工具走代理。
参考
- 在 Linux 中使用 Clash
- MetaCubeX/mihomo(原版 Clash 的活跃接续分支)